var g_gmpLibJsLoaded=false;
function gmpLoadGoogleLib(){
if(!g_gmpLibJsLoaded){
jQuery('head').append('');
g_gmpLibJsLoaded=true;
}}
function gmpGoogleMap(elementId, params, additionalData){
if(typeof(google)==='undefined'){
gmpLoadGoogleLib();
}
params=params ? params:{};
additionalData=additionalData ? additionalData:{};
var defaults={
center: new google.maps.LatLng(40.69847032728747, -73.9514422416687)
, zoom: 8
};
if(params.map_center&¶ms.map_center.coord_x&¶ms.map_center.coord_y){
params.center=new google.maps.LatLng(params.map_center.coord_x, params.map_center.coord_y);
}
if(params.zoom){
params.zoom=parseInt(params.zoom);
}
if(!GMP_DATA.isAdmin&¶ms.zoom_type=='zoom_level'&¶ms.zoom_mobile&&jQuery(document).width() < 768){
params.zoom=parseInt(params.zoom_mobile);
}
if(typeof(elementId)==='string'){
elementId=jQuery(elementId)[0];
}
this._elementId=elementId;
this._mapParams=jQuery.extend({}, defaults, params);
this._mapObj=null;
this._markers=[];
this._shapes=[];
this._heatmap=[];
this._clasterer=null;
this._clastererEnabled=false;
this._clastererMarkersGroupsStyles=[];
this._eventListeners={};
this._layers={};
this.mapMarkersGroups=additionalData.markerGroups ? additionalData.markerGroups:[];
this.init();
}
gmpGoogleMap.prototype.init=function(){
this._beforeInit();
this._mapObj=new google.maps.Map(this._elementId, this._mapParams);
this._afterInit();
};
gmpGoogleMap.prototype._beforeInit=function(){
if(typeof(this._mapParams.type_control)!=='undefined'){
if(typeof(google.maps.MapTypeControlStyle[ this._mapParams.type_control ])!=='undefined'){
this._mapParams.mapTypeControlOptions={
style: google.maps.MapTypeControlStyle[ this._mapParams.type_control ]
};
this._mapParams.mapTypeControl=true;
}else{
this._mapParams.mapTypeControl=false;
}}
if(typeof(this._mapParams.zoom_control)!=='undefined'){
if(typeof(google.maps.ZoomControlStyle[ this._mapParams.zoom_control ])!=='undefined'){
this._mapParams.zoomControlOptions={
style: google.maps.ZoomControlStyle[ this._mapParams.zoom_control ]
};
this._mapParams.zoomControl=true;
}else{
this._mapParams.zoomControl=false;
}}
if(typeof(this._mapParams.street_view_control)!=='undefined'){
this._mapParams.streetViewControl=parseInt(this._mapParams.street_view_control) ? true:false;
}
if(typeof(this._mapParams.pan_control)!=='undefined'){
this._mapParams.panControl=parseInt(this._mapParams.pan_control) ? true:false;
}
if(typeof(this._mapParams.overview_control)!=='undefined'){
if(this._mapParams.overview_control!=='none'){
this._mapParams.overviewMapControlOptions={
opened: this._mapParams.overview_control==='opened' ? true:false
};
this._mapParams.overviewMapControl=true;
}else{
this._mapParams.overviewMapControl=false;
}}
if(typeof(this._mapParams.dbl_click_zoom)!=='undefined'){
this._mapParams.disableDoubleClickZoom=parseInt(this._mapParams.dbl_click_zoom) ? false:true;
}
if(typeof(this._mapParams.mouse_wheel_zoom)!=='undefined'){
this._mapParams.scrollwheel=parseInt(this._mapParams.mouse_wheel_zoom) ? true:false;
}
if(typeof(this._mapParams.map_type)!=='undefined'
&& typeof(google.maps.MapTypeId[ this._mapParams.map_type ])!=='undefined'
){
this._mapParams.mapTypeId=google.maps.MapTypeId[ this._mapParams.map_type ];
}
if(typeof(this._mapParams.map_stylization_data)!=='undefined'
&& this._mapParams.map_stylization_data
){
this._mapParams.styles=this._mapParams.map_stylization_data;
}
jQuery(document).trigger('gmapBeforeMapInit', this);
};
gmpGoogleMap.prototype.getParams=function(){
return this._mapParams;
};
gmpGoogleMap.prototype.getParam=function(key){
return this._mapParams[ key ];
};
gmpGoogleMap.prototype.setParam=function(key, value){
this._mapParams[ key ]=value;
return this;
};
gmpGoogleMap.prototype._afterInit=function(){
if(typeof(this._mapParams.marker_clasterer)!=='undefined'&&this._mapParams.marker_clasterer){
this.enableClasterization(this._mapParams.marker_clasterer);
}
this.applyZoomType();
if(typeof(this._mapParams.zoom_min)!=='undefined'&&typeof(this._mapParams.zoom_max)!=='undefined'){
this._setMinZoomLevel();
this._setMaxZoomLevel();
this._fixZoomLevel();
}
this.resizeMapByHeight();
jQuery(window).bind('resize', jQuery.proxy(this.resizeMapByHeight, this));
jQuery(window).bind('orientationchange', jQuery.proxy(this.resizeMapByHeight, this));
jQuery(document).trigger('gmapAfterMapInit', this);
};
gmpGoogleMap.prototype._setMinZoomLevel=function(){
var curZoom=this.getZoom();
var minZoom=parseInt(this._mapParams.zoom_min) ? parseInt(this._mapParams.zoom_min):null;
this.getRawMapInstance().setOptions({minZoom: minZoom});
if(curZoom < minZoom)
this.getRawMapInstance().setOptions({zoom: minZoom});
};
gmpGoogleMap.prototype._setMaxZoomLevel=function(){
var maxZoom=parseInt(this._mapParams.zoom_max) ? parseInt(this._mapParams.zoom_max):null;
this.getRawMapInstance().setOptions({maxZoom: maxZoom});
if(this.getRawMapInstance().zoom > maxZoom)
this.getRawMapInstance().setOptions({zoom: maxZoom});
};
gmpGoogleMap.prototype._fixZoomLevel=function(){
var eventHandle=this._getEventListenerHandle('zoom_changed', 'zoomChanged');
if(!eventHandle){
eventHandle=google.maps.event.addListener(this.getRawMapInstance(), 'zoom_changed', jQuery.proxy(function(){
var minZoom=parseInt(this.getParam('zoom_min'))
, maxZoom=parseInt(this.getParam('zoom_max'));
if(this.getZoom() < minZoom){
this.setZoom(minZoom);
if(GMP_DATA.isAdmin&&this._getEventListenerHandle('idle', 'enableClasterization'))
google.maps.event.trigger(this.getRawMapInstance(), 'idle');
}
if(this.getZoom() > maxZoom){
this.setZoom(maxZoom);
if(GMP_DATA.isAdmin&&this._getEventListenerHandle('idle', 'enableClasterization'))
google.maps.event.trigger(this.getRawMapInstance(), 'idle');
}}, this));
this._addEventListenerHandle('zoom_changed', 'zoomChanged', eventHandle);
}};
gmpGoogleMap.prototype.enableClasterization=function(clasterType, needTrigger){
needTrigger=needTrigger ? needTrigger:false;
switch(clasterType){
case 'MarkerClusterer':
var self=this;
self.setClastererMarkersGroupsStyles();
var eventHandle=google.maps.event.addListenerOnce(self.getRawMapInstance(), 'idle', function(a, b, c){
var clasterGridSize=self.getParam('marker_clasterer_grid_size')
, markerGroupsStyles=self.getClastererMarkersGroupsStyles();
var allMapMarkers=self.getAllRawMarkers()
, allVisibleMapMarkers=[]
, clasterer=self.getClasterer();
for(var i=0; i < allMapMarkers.length; i++){
if(allMapMarkers[i].getVisible()&&!parseInt(allMapMarkers[i].params.clasterer_exclude)){
allVisibleMapMarkers.push(allMapMarkers[i]);
}}
if(clasterer){
clasterer.clearMarkers();
clasterer.addMarkers(allVisibleMapMarkers);
clasterer.setStyles(markerGroupsStyles);
self.setClastererGridSize(clasterGridSize);
clasterer.resetViewport();
clasterer.redraw();
}else{
clasterer=new MarkerClusterer(self.getRawMapInstance(), allVisibleMapMarkers, { styles: markerGroupsStyles, clusterClass: "cluster" });
clasterer.setCalculator(self.customClastererCalculatorFunction(markerGroupsStyles));
self.setClasterer(clasterer);
self.setClastererGridSize(clasterGridSize);
clasterer=self.getClasterer();
}});
this._addEventListenerHandle('idle', 'enableClasterization', eventHandle);
if(GMP_DATA.isAdmin||needTrigger){
google.maps.event.trigger(self.getRawMapInstance(), 'idle');
}
this._clastererEnabled=true;
break;
}};
gmpGoogleMap.prototype.disableClasterization=function(){
var eventHandle=this._getEventListenerHandle('idle', 'enableClasterization');
if(eventHandle){
var clasterer=this.getClasterer();
if(clasterer){
clasterer.clearMarkers();
var markers=this.getAllRawMarkers();
for(var i=0; i < markers.length; i++){
markers[i].setMap(this.getRawMapInstance());
}}
google.maps.event.removeListener(eventHandle);
google.maps.event.trigger(this.getRawMapInstance(), 'idle');
this._clastererEnabled=false;
}};
gmpGoogleMap.prototype.customClastererCalculatorFunction=function(markerGroupsStyles){
return function(markers, numStyles){
var styleIndex=1, markersGroupsStyles=markerGroupsStyles, markersGroupsIds={}, maxCount=0, groupId=0, curStyle=[];
for (var i=0; i < markers.length; i++){
if(markers[i].marker_group_id){
if(typeof(markersGroupsIds[markers[i].marker_group_id])=='undefined'){
markersGroupsIds[markers[i].marker_group_id]=1;
}else{
markersGroupsIds[markers[i].marker_group_id]++;
}}
}
for (var currGroupId in markersGroupsIds){
if(markersGroupsIds[currGroupId] > maxCount){
maxCount=markersGroupsIds[currGroupId];
groupId=currGroupId;
}}
curStyle=jQuery.grep(markersGroupsStyles, function (e, i){
if(e.marker_group_id==groupId){
return e;
}});
if(curStyle&&curStyle[0])
styleIndex=markersGroupsStyles.indexOf(curStyle[0]) + 1;
return {
text: markers.length,
index: styleIndex
};}};
gmpGoogleMap.prototype.getClasterer=function(){
if(this._clasterer){
return this._clasterer;
}
return false;
};
gmpGoogleMap.prototype.setClasterer=function(clasterer){
this._clasterer=clasterer;
};
gmpGoogleMap.prototype.setMapMarkersGroups=function(groups){
this.mapMarkersGroups=groups;
};
gmpGoogleMap.prototype.getMapMarkersGroups=function(){
return this.mapMarkersGroups;
};
gmpGoogleMap.prototype.setClastererMarkersGroupsStyles=function(){
var mapMarkersGroups=this.getMapMarkersGroups()
, markersGroupsStyles=this.getClastererMarkersGroupsStyles()
, defClasterIcon=GMP_DATA.modPath + 'gmap/img/m1.png'
, oldDefClasterIcon='https://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/images/m1.png' // Prevent to use old default claster icon cdn icon because it is missing
, clasterIcon=this.getParam('marker_clasterer_icon')
, iconWidth=this.getParam('marker_clasterer_icon_width')
, iconHeight=this.getParam('marker_clasterer_icon_height');
clasterIcon=clasterIcon&&clasterIcon!=oldDefClasterIcon ? clasterIcon:defClasterIcon;
iconWidth=iconWidth ? iconWidth:53;
iconHeight=iconHeight ? iconHeight:52;
markersGroupsStyles.push({
marker_group_id: 0
, url: clasterIcon
, width: iconWidth
, height: iconHeight
});
if(mapMarkersGroups){
for(var i=0; i < mapMarkersGroups.length; i++){
var markerGroupId=mapMarkersGroups[i].id
, markerGroupClasterIcon=mapMarkersGroups[i].params.claster_icon
, markerGroupClasterIconWidth=mapMarkersGroups[i].params.claster_icon_width
, markerGroupClasterIconHeight=mapMarkersGroups[i].params.claster_icon_height;
if(markerGroupClasterIcon&&markerGroupClasterIcon!=clasterIcon){
markersGroupsStyles.push({
marker_group_id: markerGroupId
, url: markerGroupClasterIcon ? markerGroupClasterIcon:defClasterIcon
, width: markerGroupClasterIconWidth ? markerGroupClasterIconWidth:53
, height: markerGroupClasterIconHeight ? markerGroupClasterIconHeight:52
, className: "cluster",
});
}}
}};
gmpGoogleMap.prototype.getClastererMarkersGroupsStyles=function(){
return this._clastererMarkersGroupsStyles;
};
gmpGoogleMap.prototype.setClastererGridSize=function(size){
var clasterer=this.getClasterer();
size=size&&parseInt(size) ? parseInt(size):null;
if(clasterer&&size){
clasterer.setGridSize(size);
}};
gmpGoogleMap.prototype.getClastererGridSize=function(){
var clasterer=this.getClasterer()
, clusterGridSize=null;
if(clasterer){
clusterGridSize=clasterer.getGridSize();
}
return clusterGridSize;
};
gmpGoogleMap.prototype.markersRefresh=function(){
var clasterer=this.getClasterer();
if(this._clastererEnabled&&clasterer){
clasterer.clearMarkers();
clasterer.addMarkers(this.getAllRawMarkers());
}
jQuery(document).trigger('gmapAfterMarkersRefresh', this);
};
gmpGoogleMap.prototype._addEventListenerHandle=function(event, code, handle){
if(!this._eventListeners[ event ])
this._eventListeners[ event ]={};
this._eventListeners[ event ][ code ]=handle;
};
gmpGoogleMap.prototype._getEventListenerHandle=function(event, code){
return this._eventListeners[ event ]&&this._eventListeners[ event ][ code ]
? this._eventListeners[ event ][ code ]
: false;
};
gmpGoogleMap.prototype.getRawMapInstance=function(){
return this._mapObj;
};
gmpGoogleMap.prototype.setCenter=function (lat, lng){
if(typeof lng=='undefined'){
this.getRawMapInstance().setCenter(lat);
}else
this.getRawMapInstance().setCenter(new google.maps.LatLng(lat, lng));
return this;
};
gmpGoogleMap.prototype.getCenter=function (){
return this.getRawMapInstance().getCenter();
};
gmpGoogleMap.prototype.setZoom=function (zoomLevel){
this.getRawMapInstance().setZoom(parseInt(zoomLevel));
};
gmpGoogleMap.prototype.getZoom=function (){
return this.getRawMapInstance().getZoom();
};
gmpGoogleMap.prototype.getBounds=function (){
return this.getRawMapInstance().getBounds();
};
gmpGoogleMap.prototype.fitBounds=function (bounds){
this.getRawMapInstance().fitBounds(bounds);
};
gmpGoogleMap.prototype.addMarker=function(params){
params.clusterClass='cluster';
var newMarker=new gmpGoogleMarker(this, params);
this._markers.push(newMarker);
return newMarker;
};
gmpGoogleMap.prototype.addShape=function(params){
var newShape=new gmpGoogleShape(this, params);
this._shapes.push(newShape);
return newShape;
};
gmpGoogleMap.prototype.addHeatmap=function(params){
var heatmap=new gmpGoogleHeatmap(this, params);
this._heatmap.push(heatmap);
return heatmap;
};
gmpGoogleMap.prototype.getMarkerById=function(id){
if(this._markers&&this._markers.length){
for(var i in this._markers){
if(this._markers[i].getId&&this._markers[i].getId()==id)
return this._markers[ i ];
}}
return false;
};
gmpGoogleMap.prototype.getShapeById=function(id){
if(this._shapes&&this._shapes.length){
for(var i in this._shapes){
if(this._shapes[ i ].getId()==id)
return this._shapes[ i ];
}}
return false;
};
gmpGoogleMap.prototype.getHeatmap=function(){
if(this._heatmap&&this._heatmap.length){
return this._heatmap[0];
}
return false;
};
gmpGoogleMap.prototype.removeMarker=function(id){
var marker=this.getMarkerById(id);
if(marker){
marker.removeFromMap();
}};
gmpGoogleMap.prototype.removeShape=function(id){
var shape=this.getShapeById(id);
if(shape){
shape.removeFromMap();
}};
gmpGoogleMap.prototype.getAllMarkers=function(){
return this._markers;
};
gmpGoogleMap.prototype.getAllShapes=function(){
return this._shapes;
};
gmpGoogleMap.prototype.getAllRawMarkers=function(){
var res=[];
if(this._markers&&this._markers.length){
for(var i=0; i < this._markers.length; i++){
res.push(this._markers[i].getRawMarkerInstance());
}}
return res;
};
gmpGoogleMap.prototype.setMarkersParams=function(markers){
if(this._markers&&this._markers.length){
for(var i=0; i < this._markers.length; i++){
for(var j=0; j < markers.length; j++){
if(this._markers[i].getId()==markers[j].id){
this._markers[i].setMarkerParams(markers[j]);
break;
}}
}}
};
gmpGoogleMap.prototype.get=function(key){
return this.getRawMapInstance().get(key);
};
gmpGoogleMap.prototype.set=function(key, value){
this.getRawMapInstance().set(key, value);
return this;
};
gmpGoogleMap.prototype.clearMarkers=function(){
if(this._markers&&this._markers.length){
for(var i=0; i < this._markers.length; i++){
this._markers[i].setMap(null);
}
this._markers=[];
}};
gmpGoogleMap.prototype.clearMarkersByParam=function(param){
if(this._markers&&this._markers.length){
for(var i=0; i < this._markers.length; i++){
if(this._markers[i].getMarkerParam(param)){
this._markers[i].setMap(null);
this._markers.splice(i, 1);
this.clearMarkersByParam(param);
break;
}}
}};
gmpGoogleMap.prototype.clearShapes=function(){
if(this._shapes&&this._shapes.length){
for(var i=0; i < this._shapes.length; i++){
this._shapes[i].setMap(null);
}
this._shapes=[];
}};
gmpGoogleMap.prototype.getViewId=function(){
return this._mapParams.view_id;
};
gmpGoogleMap.prototype.getViewHtmlId=function(){
return this._mapParams.view_html_id;
};
gmpGoogleMap.prototype.getId=function(){
return this._mapParams.id;
};
gmpGoogleMap.prototype.refresh=function(){
return google.maps.event.trigger(this.getRawMapInstance(), 'resize');
};
gmpGoogleMap.prototype.refreshWithCenter=(function(lat, lng, zoom){
var res=google.maps.event.trigger(this.getRawMapInstance(), 'resize');
if(zoom){
this.setZoom(zoom);
}else{
this.setZoom(this.getZoom());
}
if(lat&&lng){
this.setCenter(lat, lng);
}else{
this.setCenter(this.getCenter().lat(), this.getCenter().lng());
}
return res;
});
gmpGoogleMap.prototype.fullRefresh=function(){
this.refresh();
this.checkMarkersParams(this._markers, false);
this.setCenter(this._mapParams.center);
};
gmpGoogleMap.prototype.checkMarkersParams=function(markers, needToShow){
if(markers&&markers.length){
for (var i=0; i < markers.length; i++){
var markerParams=markers[i].getMarkerParam('params')
, showDescription=parseInt(markerParams.show_description);
if(showDescription||needToShow){
markers[i].showInfoWnd(true, showDescription);
}}
}};
gmpGoogleMap.prototype.resizeMapByHeight=function(e, elem, withoutAfter){
if(!GMP_DATA.isAdmin&&parseInt(this.getParam('adapt_map_to_screen_height'))&&this.getRawMapInstance().map_display_mode!='popup'){
var viewId=this.getParam('view_id')
, selectors=this.getParam('selectors')
, windowObj=jQuery(window)
, mapContainer=jQuery('#gmpMapDetailsContainer_' + viewId)
, mapContainerWrap=jQuery('#mapConElem_' + viewId)
, height;
withoutAfter=withoutAfter ? withoutAfter:(mapContainerWrap.data('rmh-without-after') ? mapContainerWrap.data('rmh-without-after'):false);
elem=elem ? elem:(mapContainerWrap.data('rmh-additional-elem') ? jQuery(mapContainerWrap.data('rmh-additional-elem')):null);
if(!selectors||(!selectors.content_before&&!selectors.content_after)){
var mapContainerOffset=mapContainer.length ? mapContainer.offset():false
, windowHeight=windowObj.height();
height=mapContainerOffset.top < windowHeight ? windowHeight - mapContainerOffset.top:windowHeight;
}else{
var viewportData=this.getViewportData(0, withoutAfter)
, proControlsCon=jQuery('#gmpMapProControlsCon_'+ viewId);
height=viewportData.height;
mapContainer.parents('.gmp_map_opts:first').css({
'position': 'fixed'
, 'top': viewportData.contentBeforeHeight
, 'left': '0'
, 'width': windowObj.width()
, 'height': height
, 'z-index': 1
});
if(proControlsCon.find('.gmpMarkersListCollapseShell').length){
mapContainer.parents('.gmp_map_opts:first').css({
'overflow-x': 'hidden'
, 'overflow-y': 'auto'
});
}
jQuery(selectors.content_before).css({
'z-index': 2
});
if(!withoutAfter){
jQuery(selectors.content_after).css({
'position': 'fixed'
, 'bottom': '0'
, 'left': '0'
, 'width': windowObj.width()
, 'z-index': 1
});
}
if(elem&&elem.length){
height -=elem.outerHeight(true);
}}
jQuery('#gmpMapDetailsContainer_' + viewId + ', #' + this.getParam('view_html_id')).each(function (){
jQuery(this).height(height);
});
this.refresh();
}};
gmpGoogleMap.prototype.getViewportData=function(additionalHeight, withoutAfter){
withoutAfter=withoutAfter ? withoutAfter:false;
additionalHeight=additionalHeight ? additionalHeight:0;
var selectors=this.getParam('selectors')
, adminBar=jQuery('#wpadminbar')
, viewportData={
height: jQuery(window).height(),
contentBeforeHeight: 0,
contentAfterHeight: 0
}
, i;
if(typeof selectors!=='undefined'&&selectors!=null){
var contentBefore=typeof selectors.content_before!=='undefined' ? jQuery(selectors.content_before):0
, contentAfter=typeof selectors.content_after!=='undefined' ? jQuery(selectors.content_after):0;
if(adminBar.length){
viewportData.contentBeforeHeight +=adminBar.outerHeight(true);
}
if(contentBefore.length){
for(i=0; i < contentBefore.length; i++){
viewportData.contentBeforeHeight +=jQuery(contentBefore[i]).outerHeight(true);
}}
if(contentAfter.length&&!withoutAfter){
for(i=0; i < contentAfter.length; i++){
viewportData.contentAfterHeight +=jQuery(contentAfter[i]).outerHeight(true);
}}
}
viewportData.height=viewportData.height - viewportData.contentBeforeHeight - viewportData.contentAfterHeight - additionalHeight;
return viewportData;
};
gmpGoogleMap.prototype.applyZoomType=function(){
if(!GMP_DATA.isAdmin&&this.getParam('zoom_type')=='fit_bounds'){
var eventHandle=google.maps.event.addListenerOnce(this.getRawMapInstance(), 'tilesloaded', jQuery.proxy(this._getBoundsHandler, this));
this._addEventListenerHandle('tilesloaded', 'fitBounds', eventHandle);
}};
gmpGoogleMap.prototype.applyZoomTypeAdmin=function(){
if(GMP_DATA.isAdmin&&this.getParam('zoom_type')=='fit_bounds'){
this._getBoundsHandler();
}};
gmpGoogleMap.prototype._getBoundsHandler=function(){
var bounds=new google.maps.LatLngBounds();
bounds=this._getMapMarkersBounds(bounds);
this._setMapBounds(bounds);
};
gmpGoogleMap.prototype._getMapMarkersBounds=function(bounds){
var markers=this.getAllMarkers();
for (var i=0; i < markers.length; i++){
bounds.extend(markers[i].getPosition());
}
return bounds;
};
gmpGoogleMap.prototype._setMapBounds=function(bounds){
if(!bounds.getNorthEast().equals(bounds.getSouthWest())){
this.fitBounds(bounds);
}};
var g_gmpGeocoder=null;
jQuery.fn.mapSearchAutocompleateGmp=function(params){
params=params||{};
jQuery(this).keyup(function(event){
if(toeInArrayGmp(event.keyCode, [9, 13, 20, 35, 36, 37, 38, 39, 40])) return;
var searchData=jQuery.trim(jQuery(this).val());
if(searchData&&searchData!=''){
if(typeof(params.msgEl)==='string'){
params.msgEl=jQuery(params.msgEl);
}
params.msgEl.showLoaderGmp();
var self=this;
jQuery(this).autocomplete(jQuery.extend({}, params.autocompleteParams, {
source: function(request, response){
var autocomleateData=typeof(params.additionalData)!='undefined' ? gmpAutocomleateData(params.additionalData, request.term):[]
, geocoder=gmpGetGeocoder()
, geocoderData={ 'address': searchData };
if(typeof(params.geocoderParams)!='undefined'&¶ms.geocoderParams){
geocoderData=jQuery.extend({}, geocoderData, params.geocoderParams)
}
geocoder.geocode(geocoderData, function(results, status){
params.msgEl.html('');
if(status==google.maps.GeocoderStatus.OK&&results.length){
for(var i=0; i < results.length; i++){
autocomleateData.push({
label: results[i].formatted_address
, lat: results[i].geometry.location.lat()
, lng: results[i].geometry.location.lng()
, category: toeLangGmp('Plases')
});
}
response(autocomleateData);
}else{
if(autocomleateData){
response(autocomleateData);
}else{
var notFoundMsg=toeLangGmp('Nothing was found');
if(jQuery(self).parent().find('.ui-helper-hidden-accessible').length){
jQuery(self).parent().find('.ui-helper-hidden-accessible').html(notFoundMsg);
}else{
params.msgEl.html(notFoundMsg);
}}
}});
}
, select: function(event, ui){
if(params.onSelect){
params.onSelect(ui.item, event, ui);
}}
}));
jQuery(this).autocomplete('search');
}});
};
function gmpAutocomleateData(data, needle){
var autocomleateData=[];
for(var i=0; i < data.length; i++){
for(var j=0; j < data[i].length; j++){
if(data[i][j]){
var label=data[i][j].label.toString().toLowerCase()
, desc=data[i][j].marker_desc!='undefined' ? data[i][j].marker_desc:''
, term=needle.toLowerCase();
if(label.indexOf(term)!==-1||(desc&&desc.indexOf(term)!==-1)){
autocomleateData.push(data[i][j]);
}}
}}
return autocomleateData;
}
function gmpGetGeocoder(){
if(!g_gmpGeocoder){
g_gmpGeocoder=new google.maps.Geocoder();
}
return g_gmpGeocoder;
}
function changeInfoWndType(map){
var infowndContent=jQuery('#'+ map._elementId.id).find('.gm-style-iw')
, type=map.getParam('marker_infownd_type')
, hideInfoWndBtn=parseInt(map.getParam('marker_infownd_hide_close_btn'));
switch(type){
case '':
if(infowndContent&&infowndContent.length){
infowndContent.each(function(){
var $this=jQuery(this)
, wndBody=$this.prev().children().last()
, wndBodyShadow=$this.prev().children(':nth-child(2)')
, wndTail=$this.prev().children(':nth-child(3)')
, wndTailShadow=$this.prev().children().first();
$this.css({
'border-radius': '0px'
});
});
}
break;
case 'rounded_edges':
if(infowndContent&&infowndContent.length){
infowndContent.each(function(){
var $this=jQuery(this)
, wndBody=$this.prev().children().last()
, wndBodyShadow=$this.prev().children(':nth-child(2)')
, wndTail=$this.prev().children(':nth-child(3)')
, wndTailShadow=$this.prev().children().first();
if(hideInfoWndBtn!==0){
$this.find(".gm-ui-hover-effect").hide();
}
$this.find('.gmpInfoWindowtitle').css({
'padding': '0'
, 'left': '0'
});
wndBody.css({
'border-radius': '10px'
});
wndBodyShadow.css({
'background-color': 'transparent',
'-moz-box-shadow': 'none',
'-webkit-box-shadow': 'none',
'box-shadow': 'none'
});
wndTail.children().each(function(index){
var $this=jQuery(this)
, degrees = !index ? 'skewX(50.6deg)':'skewX(-50.6deg)'
, left = !index ? '-2px':'0';
$this.css({
'height': '15px'
});
$this.children().css({
'width': '20px'
, 'left': left
, 'transform': degrees
, '-moz-box-shadow': 'none'
, '-webkit-box-shadow': 'none'
, 'box-shadow': 'none'
});
});
wndTailShadow.css({
'border-right': 'none'
, 'border-left': 'none'
, 'border-top': 'none'
, 'left': '38px'
, 'top': '74px'
});
});
}
break;
default:
break;
}}
function changeInfoWndBgColor(map){
g_gmpMarkerBgColorTimeoutSet=false;
var color=map.getParam('marker_infownd_bg_color');
var infowndContent=jQuery('#'+ map._elementId.id).find('.gm-style-iw'),
styleId='gmpInfoWindowStyle';
if(infowndContent&&infowndContent.length){
infowndContent.each(function(){
var wndBody=jQuery(this).prev().children().last()
, wndTail=jQuery(this).prev().children(':nth-child(3)').children().last();
infowndContent.css('background-color', color);
infowndContent.prev().children().last().css('background-color', color);
infowndContent.children().css('background-color', color);
var styleTag=jQuery('#'+styleId),
styles='.gm-style-iw-t::after { background:'+color+' !important; }';
styles +='.gm-style .gm-style-iw-d::-webkit-scrollbar-track, .gm-style .gm-style-iw-d::-webkit-scrollbar-track-piece { background: '+color+' !important; }';
if(styleTag.length){
styleTag.html(styles);
}else{
jQuery('').attr('id', styleId).appendTo('head');
}});
}}
window.gmpGoogleMap=gmpGoogleMap;